﻿// Decompiled with JetBrains decompiler
// Type: UnityEngine.LightingSettings
// Assembly: UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: E6AE6B5A-2752-4B07-9528-C8B77C62CE79
// Assembly location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.dll
// XML documentation location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.xml

using System;
using System.Runtime.CompilerServices;
using UnityEngine.Bindings;
using UnityEngine.Scripting;

#nullable disable
namespace UnityEngine
{
  /// <summary>
  ///   <para>An object containing settings for precomputing lighting data, that Unity can serialize as a.</para>
  /// </summary>
  [PreventReadOnlyInstanceModification]
  [NativeHeader("Runtime/Graphics/LightingSettings.h")]
  public sealed class LightingSettings : Object
  {
    [RequiredByNativeCode]
    internal void LightingSettingsDontStripMe()
    {
    }

    public LightingSettings() => LightingSettings.Internal_Create(this);

    [MethodImpl(MethodImplOptions.InternalCall)]
    private static extern void Internal_Create([Writable] LightingSettings self);

    /// <summary>
    ///   <para>Whether to enable the Baked Global Illumination system for this Scene.</para>
    /// </summary>
    [NativeName("EnableBakedLightmaps")]
    public extern bool bakedGI { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Whether to enable the Enlighten Realtime Global Illumination system for this Scene.</para>
    /// </summary>
    [NativeName("EnableRealtimeLightmaps")]
    public extern bool realtimeGI { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines the lightmap that Unity stores environment lighting in.</para>
    /// </summary>
    [NativeName("RealtimeEnvironmentLighting")]
    public extern bool realtimeEnvironmentLighting { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Whether the Unity Editor automatically precomputes lighting data when the Scene data changes. (Editor only).</para>
    /// </summary>
    [NativeName("AutoGenerate")]
    public extern bool autoGenerate { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Sets the MixedLightingMode that Unity uses for all Mixed Lights in the Scene. (Editor only).</para>
    /// </summary>
    [NativeName("MixedBakeMode")]
    public extern MixedLightingMode mixedBakeMode { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>The intensity of surface albedo throughout the Scene when considered in lighting calculations. This value influences the energy of light at each bounce. (Editor only).</para>
    /// </summary>
    [NativeName("AlbedoBoost")]
    public extern float albedoBoost { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Multiplies the intensity of of indirect lighting in lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("IndirectOutputScale")]
    public extern float indirectScale { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines which backend to use for baking lightmaps in the Baked Global Illumination system. (Editor only).</para>
    /// </summary>
    [NativeName("BakeBackend")]
    public extern LightingSettings.Lightmapper lightmapper { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>The maximum size in pixels of an individual lightmap texture. (Editor only).</para>
    /// </summary>
    [NativeName("LightmapMaxSize")]
    public extern int lightmapMaxSize { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Defines the number of texels to use per world unit when generating lightmaps.</para>
    /// </summary>
    [NativeName("BakeResolution")]
    public extern float lightmapResolution { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Sets the distance (in texels) between separate UV tiles in lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("Padding")]
    public extern int lightmapPadding { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>The level of compression the Editor uses for lightmaps.</para>
    /// </summary>
    [NativeName("LightmapCompression")]
    public extern LightmapCompression lightmapCompression { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Whether to compress the lightmap textures that the Progressive Lightmapper generates. (Editor only)</para>
    /// </summary>
    [Obsolete("Use LightingSettings.lightmapCompression instead.")]
    [NativeName("TextureCompression")]
    public extern bool compressLightmaps { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Whether to apply ambient occlusion to lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("AO")]
    public extern bool ao { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>The distance that a ray travels before Unity considers it to be unoccluded when calculating ambient occlusion in lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("AOMaxDistance")]
    public extern float aoMaxDistance { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Sets the contrast of ambient occlusion that Unity applies to indirect lighting in lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("CompAOExponent")]
    public extern float aoExponentIndirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines the degree to which direct lighting is considered when calculating ambient occlusion in lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("CompAOExponentDirect")]
    public extern float aoExponentDirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Whether the Progressive Lightmapper extracts Ambient Occlusion to a separate lightmap. (Editor only).</para>
    /// </summary>
    [NativeName("ExtractAO")]
    public extern bool extractAO { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines whether the lightmapper should generate directional or non-directional lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("LightmapsBakeMode")]
    public extern LightmapsMode directionalityMode { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    [NativeName("FilterMode")]
    internal extern UnityEngine.FilterMode lightmapFilterMode { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Whether the Progressive Lightmapper exports machine learning training data to the Project folder when it performs the bake. ( Editor only).</para>
    /// </summary>
    public extern bool exportTrainingData { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines the name of the destination folder for the exported textures. (Editor only).</para>
    /// </summary>
    public extern string trainingDataDestination { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Defines the number of texels that Enlighten Realtime Global Illumination uses per world unit when calculating indirect lighting. (Editor only).</para>
    /// </summary>
    [NativeName("RealtimeResolution")]
    public extern float indirectResolution { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    [NativeName("ForceWhiteAlbedo")]
    internal extern bool realtimeForceWhiteAlbedo { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    [NativeName("ForceUpdates")]
    internal extern bool realtimeForceUpdates { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies whether the Editor calculates the final global illumination light bounce at the same resolution as the baked lightmap.</para>
    /// </summary>
    public extern bool finalGather { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Controls the number of rays emitted for every final gather point. A final gather point is a lightmap texel in the final, composited lightmap. (Editor only).</para>
    /// </summary>
    public extern float finalGatherRayCount { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Controls whether a denoising filter is applied to the final gather output.</para>
    /// </summary>
    public extern bool finalGatherFiltering { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    [NativeName("PVRSampling")]
    public extern LightingSettings.Sampling sampling { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the number of samples the Progressive Lightmapper uses for direct lighting calculations. (Editor only).</para>
    /// </summary>
    [NativeName("PVRDirectSampleCount")]
    public extern int directSampleCount { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the number of samples the Progressive Lightmapper uses for indirect lighting calculations. (Editor only).</para>
    /// </summary>
    [NativeName("PVRSampleCount")]
    public extern int indirectSampleCount { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>This property is now obsolete. Use LightingSettings.maxBounces. </para>
    /// </summary>
    [Obsolete("Use LightingSettings.maxBounces instead. (UnityUpgradable) -> UnityEngine.LightingSettings.maxBounces", false)]
    [NativeName("PVRBounces")]
    public extern int bounces { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Stores the maximum number of bounces the Progressive Lightmapper computes for indirect lighting. (Editor only)</para>
    /// </summary>
    [NativeName("PVRBounces")]
    public extern int maxBounces { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>This property is now obsolete. Use LightingSettings.minBounces.</para>
    /// </summary>
    [NativeName("PVRMinBounces")]
    [Obsolete("Use LightingSettings.minBounces instead. (UnityUpgradable) -> UnityEngine.LightingSettings.minBounces", false)]
    public extern int russianRouletteStartBounce { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Stores the minimum number of bounces the Progressive Lightmapper computes for indirect lighting. (Editor only)</para>
    /// </summary>
    [NativeName("PVRMinBounces")]
    public extern int minBounces { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Whether the Progressive Lightmapper prioritizes baking visible texels within the frustum of the Scene view. (Editor only).</para>
    /// </summary>
    [NativeName("PVRCulling")]
    public extern bool prioritizeView { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    [NativeName("TiledBaking")]
    internal extern LightingSettings.TiledBaking tiledBaking { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the filter type that the Progressive Lightmapper uses for ambient occlusion. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilteringMode")]
    public extern LightingSettings.FilterMode filteringMode { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines the denoiser that the Progressive Lightmapper applies to direct lighting. (Editor only).</para>
    /// </summary>
    [NativeName("PVRDenoiserTypeDirect")]
    public extern LightingSettings.DenoiserType denoiserTypeDirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines the denoiser that the Progressive Lightmapper applies to indirect lighting. (Editor only).</para>
    /// </summary>
    [NativeName("PVRDenoiserTypeIndirect")]
    public extern LightingSettings.DenoiserType denoiserTypeIndirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Determines the type of denoising that the Progressive Lightmapper applies to ambient occlusion in lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("PVRDenoiserTypeAO")]
    public extern LightingSettings.DenoiserType denoiserTypeAO { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the filter kernel that the Progressive Lightmapper uses for the direct lighting. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilterTypeDirect")]
    public extern LightingSettings.FilterType filterTypeDirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the filter kernel that the Progressive Lightmapper uses for indirect lighting. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilterTypeIndirect")]
    public extern LightingSettings.FilterType filterTypeIndirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the filter kernel that the Progressive Lightmapper uses for ambient occlusion. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilterTypeAO")]
    public extern LightingSettings.FilterType filterTypeAO { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the radius the Progressive Lightmapper used to filter the indirect lighting component of the lightmap when using Gaussian filter. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilteringGaussRadiusDirect")]
    public extern int filteringGaussRadiusDirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the method used by the Progressive Lightmapper to reduce noise in lightmaps. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilteringGaussRadiusIndirect")]
    public extern int filteringGaussRadiusIndirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the radius the Progressive Lightmapper uses to filter the direct lighting component of the lightmap when using Gaussian filter. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilteringGaussRadiusAO")]
    public extern int filteringGaussRadiusAO { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the threshold the Progressive Lightmapper uses to filter the indirect lighting component of the lightmap when using the A-Trous filter. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilteringAtrousPositionSigmaDirect")]
    public extern float filteringAtrousPositionSigmaDirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the radius the Progressive Lightmapper uses to filter the ambient occlusion component in the lightmap when using Gaussian filter. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilteringAtrousPositionSigmaIndirect")]
    public extern float filteringAtrousPositionSigmaIndirect { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the threshold the Progressive Lightmapper uses to filter direct light stored in the lightmap when using the A-Trous filter. (Editor only).</para>
    /// </summary>
    [NativeName("PVRFilteringAtrousPositionSigmaAO")]
    public extern float filteringAtrousPositionSigmaAO { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    [NativeName("PVREnvironmentMIS")]
    internal extern int environmentMIS { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the number of samples the Progressive Lightmapper uses when sampling indirect lighting from the skybox. (Editor only).</para>
    /// </summary>
    [NativeName("PVREnvironmentSampleCount")]
    public extern int environmentSampleCount { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    [NativeName("PVREnvironmentReferencePointCount")]
    internal extern int environmentReferencePointCount { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Specifies the number of samples to use for Light Probes relative to the number of samples for lightmap texels. (Editor only).</para>
    /// </summary>
    [NativeName("LightProbeSampleCountMultiplier")]
    public extern float lightProbeSampleCountMultiplier { [MethodImpl(MethodImplOptions.InternalCall)] get; [MethodImpl(MethodImplOptions.InternalCall)] set; }

    /// <summary>
    ///   <para>Backends available for baking lighting.</para>
    /// </summary>
    public enum Lightmapper
    {
      /// <summary>
      ///   <para>Backend for baking lighting with Enlighten Baked Global Illumination, based on the Enlighten radiosity middleware.</para>
      /// </summary>
      Enlighten,
      /// <summary>
      ///   <para>Backend for baking lighting using the CPU. Uses a progressive path tracing algorithm.</para>
      /// </summary>
      ProgressiveCPU,
      /// <summary>
      ///   <para>Backend for baking lighting using the GPU. Uses a progressive path tracing algorithm.</para>
      /// </summary>
      ProgressiveGPU,
    }

    public enum Sampling
    {
      Auto,
      Fixed,
    }

    /// <summary>
    ///   <para>The available filtering modes for the Progressive Lightmapper.</para>
    /// </summary>
    public enum FilterMode
    {
      /// <summary>
      ///   <para>No filtering.</para>
      /// </summary>
      None,
      /// <summary>
      ///   <para>The filtering is configured automatically.</para>
      /// </summary>
      Auto,
      /// <summary>
      ///   <para>When enabled, you can configure the filtering settings for the Progressive Lightmapper. When disabled, the default filtering settings apply.</para>
      /// </summary>
      Advanced,
    }

    /// <summary>
    ///   <para>The available denoisers for the Progressive Lightmapper.</para>
    /// </summary>
    public enum DenoiserType
    {
      /// <summary>
      ///   <para>Use this to disable denoising for the lightmap.</para>
      /// </summary>
      None,
      /// <summary>
      ///   <para>NVIDIA Optix Denoiser.</para>
      /// </summary>
      Optix,
      /// <summary>
      ///   <para>Intel Open Image Denoiser.</para>
      /// </summary>
      OpenImage,
      /// <summary>
      ///   <para>RadeonPro Denoiser.</para>
      /// </summary>
      RadeonPro,
    }

    /// <summary>
    ///   <para>The available filter kernels for the Progressive Lightmapper.</para>
    /// </summary>
    public enum FilterType
    {
      /// <summary>
      ///   <para>When enabled, the lightmap uses a Gaussian filter.</para>
      /// </summary>
      Gaussian,
      /// <summary>
      ///   <para>When enabled, the lightmap uses an A-Trous filter.</para>
      /// </summary>
      ATrous,
      /// <summary>
      ///   <para>When enabled, the lightmap uses no filtering.</para>
      /// </summary>
      None,
    }

    internal enum TiledBaking
    {
      Disabled = -1, // 0xFFFFFFFF
      Auto = 0,
      Quarter = 1,
      Sixtenth = 2,
      SixtyFourth = 3,
      TwoHundredFiftySixth = 4,
    }
  }
}
